<?php

class Act_model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    // Funcion que retorna true si ya existe una actividad con el mismo nombre
    // que el parametro de entrada
    public function existeActividad($name) {
        $this->db->select('*');
        $this->db->from('actividad');
        $this->db->where('titulo = ', $name);
        $query = $this->db->get();
        if ($query->num_rows() == 1) {
            return TRUE;
        }
        return FALSE;
    }

    /* Lista el arbol de todas las actividades de un proyecto. */

    function listarArbolActividades($padre, $proyecto) {

        $this->db->select('*');
        $this->db->from('actividad');
        $this->db->where('id_padre = ', $padre);
        $this->db->where('nombre_proyecto = ', $proyecto);
        $this->db->where('email_encargado =', $this->session->userdata('email'));
        $hijo = $this->db->get();
        $res = $hijo->result_array();
        $act = array();

        for ($i = 0; $i < count($res); $i++) {
            if ($res[$i]['estatus'] == 'no asignada') {
                $act[] = '<li class="blanco" ><a href="#"><span><center>' . $res[$i]['titulo'] . $this->listarArbolActividades($res[$i]['id_actividad'], $proyecto) . '</center></span></a></li>';
            } else if ($res[$i]['estatus'] == 'sindefinir') {
                $act[] = '<li class="blanco"><a href="#"><span><center>' . $res[$i]['titulo'] . $this->listarArbolActividades($res[$i]['id_actividad'], $proyecto) . '</center></span></a></li>';
            } else if ($res[$i]['estatus'] == 'culminada') {
                $act[] = '<li class="verde"><a href="#"><span><center><p">' . $res[$i]['titulo'] . $this->listarArbolActividades($res[$i]['id_actividad'], $proyecto) . '</p></center></span></a></li>';
            } else if ($res[$i]['estatus'] == 'postergada') {
                $act[] = '<li class="amarillo"><a href="#"><span><center>' . $res[$i]['titulo'] . $this->listarArbolActividades($res[$i]['id_actividad'], $proyecto) . '</center></span></a></li>';
            } else if ($res[$i]['estatus'] == 'retrasada') {
                $act[] = '<li class="rojo"><a href="#"><span><center>' . $res[$i]['titulo'] . $this->listarArbolActividades($res[$i]['id_actividad'], $proyecto) . '</center></span></a></li>';
            } else if ($res[$i]['estatus'] == 'en proceso') {
                $act[] = '<li class="azul"><a href="#"><span><center>' . $res[$i]['titulo'] . $this->listarArbolActividades($res[$i]['id_actividad'], $proyecto) . '</center></span></a></li>';
            }
        }

        if (count($act)) {
            return '<ul>' . implode('', $act) . '</ul>';
        } else {
            return '';
        }
    }

    // Metodo que se encarga de agregar una actividad a la base de datos
    // y de colocar la tupla en pertenece
    public function agregarActividad($name, $desc, $enc, $date, $proyecto) {

        $data = array(
            'titulo' => $name,
            'descripcion' => $desc,
            'email_encargado' => $enc,
            'fecha_inicio' => $date,
            'nombre_proyecto' => $proyecto,
        );

        $this->db->insert('actividad', $data);

        $datos = array(
            'nombre_pizarra' => $proyecto,
            'id_colaborador' => $enc,
        );
        $this->db->insert('pertenece', $datos);

        return TRUE;
    }

    // Metodo que se encarga de agregar una SUB actividad a la base de datos
    // y de colocar la tupla en pertenece
    public function agregarSubActividad($name, $desc, $padre, $enc, $date, $proyecto) {

        $data = array(
            'titulo' => $name,
            'descripcion' => $desc,
            'id_padre' => $padre,
            'email_encargado' => $enc,
            'fecha_inicio' => $date,
            'nombre_proyecto' => $proyecto,
        );

        $this->db->insert('actividad', $data);

        $datos = array(
            'nombre_pizarra' => $proyecto,
            'id_colaborador' => $enc,
        );
        $this->db->insert('pertenece', $datos);

        return TRUE;
    }

    // Metodo que retorna el conjunto de actividades del proyecto recibido 
    // por parametro y el usuario registrado es el encargado de esas actividades
    public function obtenerActividades($proyecto, $colaborador) {

        $colaborador = $this->session->userdata('email');
        $this->db->select('*');
        $this->db->from('actividad');
        $this->db->where('nombre_proyecto', $proyecto);
        $this->db->where('email_encargado', $colaborador);
        $query = $this->db->get();

        $res = $query->result_array();

        return $res;
    }

    // Metodo que retorna el conjunto de comentarios de una actividad recibido 
    // por parametro y el usuario registrado es el encargado de ese proyecto.
    public function obtenerComentarios($proyecto, $actividad) {
        $colaborador = $this->session->userdata('email');
        $this->db->select('*');
        $this->db->from('comentario');
        $this->db->where('nombre_proyecto', $proyecto);
        $this->db->where('creador', $colaborador);
        $this->db->where('id_actividad', $actividad);
        $query = $this->db->get();

        $res = $query->result_array();

        return $res;
    }

    // Metodo que se encarga de agregar  un comentario de actividad a la base de datos
    // 
    public function comentarActividad($datos) {

        $this->db->insert('comentario', $datos);
        return TRUE;
    }

    // Metodo que se encarga de obtener todos los posibles encargados de una 
    // actividad, es decir lista a todos los usuarios
    public function obtenerEncargados() {

        $query = $this->db->get('usuario');
        $res = $query->result_array();

        return $res;
    }

    // Metodo que retorna la actividad que posee el id recibido como parametro
    public function obtenerActividad($id) {

        $values = array('id_actividad' => $id);
        $query = $this->db->get_where('actividad', $values);

        return $query->result_array();
    }

    // Metodo que modifica ciertos parametros de una actividad
    public function modificarActividad($name, $desc, $enc, $date, $id, $status) {

        $data = array(
            'titulo' => $name,
            'descripcion' => $desc,
            'email_encargado' => $enc,
            'fecha_inicio' => $date,
            'estatus' => $status
        );

        $this->db->set('titulo', $name);
        $this->db->set('descripcion', $desc);
        $this->db->set('email_encargado', $enc);
        $this->db->set('fecha_inicio', $date);
        $this->db->set('estatus', $status);
        $this->db->where('id_actividad', $id);
        $this->db->update('actividad');
    }

    function culminarActividad($id) {

        $this->db->set('estatus', 'culminada');
        $this->db->where('id_actividad', $id);
        $this->db->update('actividad');
    }

    public function registrarInvitado($datos) {
        $this->db->insert('usuario', $datos);
    }
}